<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>
// ES6提供了一种新的数据结构Set
// Set是一个构造函数，用于创建一个Set实例对象
// Set类似于数组
// Set有一个特征：里面的成员/元素必须是唯一的（自动去重）

// 创建一个Set实例对象
let s1 = new Set();
console.log( s1 );// Set(0) {size: 0}
console.log( typeof s1 );// 'object'

let s2 = new Set([1,2,3,4]);
// console.log( s2 );// Set(4) {1, 2, 3, 4}

// 操作Set:
console.log( s2.size );// 4 元素个数

s2.add(5);// 添加数据

s2.delete(3);// 删除数据

// Set是无序的，不能通过下标访问里面的元素！！！
console.log( s2[1] );// undefined

// has()判断set中是否有某个值
console.log( s2.has(3) );// false

// clear()清空数据
// s2.clear();

console.log( s2 );

// 遍历Set数据：
s2.forEach((val,key,set)=>{
    console.log( key,val,set );
});

s2.forEach((val)=>{
    console.log( val );
});

// for/of ES6提供的遍历方式
// for/of可以遍历部署了迭代器接口的数据（字符串、数组、伪数组、Set、Map）
for (let val of s2){
    console.log( val );
}

let arr = [1,2,3,2,1];
// 请使用一行代码对数组进行去重
console.log( [...new Set(arr)] );// [1, 2, 3]
console.log( Array.from(new Set(arr)) );// [1, 2, 3]

</script>
</body>
</html>